<!-- 修改按钮 -->

<template>
  <div>
    <BtnSave :width="100" icon="" :onClick="toSave" :disabled="!one.id" />

    <BtnDel v-if="!noDel" :width="100" icon="" :onClick="openDel" :disabled="!one.id" />

    <slot />
  </div>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import props from './props'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'EditButton',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixWeb()],

  /**
   * 属性注册 (抽取以便查阅)
   */
  props,

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 点击保存 (重复提交时，可以闪烁提示)
     */
    async toSave() {
      const { refForm, $nextTick, startEdit } = this

      // 无表单，直接提交
      if (!refForm) return startEdit()

      // 有表单，先清除再校验
      refForm.clearValidate()
      await $nextTick()
      refForm.validate((valid) => {
        valid && startEdit()
      })
    },
  },
}
</script>
